package com.czk.zookeeper.curator.connect;

import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.retry.RetryNTimes;
import org.apache.curator.retry.RetryOneTime;
import org.apache.curator.retry.RetryUntilElapsed;

/**
 * @Author:ChenZhangKun
 * @Date: 2021/1/7 20:39
 */
public class CuratorConnection {
    public static void main(String[] args) {
        // 重连策略
        // 重连一次
        RetryPolicy retryPolicy=new RetryOneTime(3000);
        // 指定重连次数
        RetryPolicy retryPolicy1=new RetryNTimes(3,3000);
        // 每三秒重连一次，总等待超过十秒后停止重连
        RetryPolicy retryPolicy2=new RetryUntilElapsed(10000,3000);
        // 随着重连次数的增加，重连的间隔也会增加
        // 算法
        RetryPolicy retryPolicy3=new ExponentialBackoffRetry(1000,3);
        CuratorFramework client = CuratorFrameworkFactory.builder()
                // ip端口号
                .connectString("192.168.25.133:2181,192.168.25.133:2182,192.168.25.133:2183")
                // 会话超时时间
                .sessionTimeoutMs(5000)
                // 链接断开后的会话重试
                .retryPolicy(new RetryOneTime(3000))
                // 命名空间，父节点
                .namespace("create")
                .build();
        // 打开连接
        client.start();
        System.out.println("连接"+client.isStarted());
        // 关闭连接
        client.close();
    }
}
